package com.topcom.emergency.utils;


import java.util.List;
import java.util.Random;

/**
 * @Author BigKang
 * @Date 2019/9/3 6:40 PM
 * @Summarize 随机生成工具类
 */
public class RandomUtil {

    /**
     * 姓氏数组
     */
    private static final String[] XING = {
            "赵", "钱", "孙", "李", "周", "吴", "郑", "王", "冯", "陈", "褚", "卫",
            "蒋", "沈", "韩", "杨", "朱", "秦", "尤", "许", "何", "吕", "施", "张",
            "孔", "曹", "严", "华", "金", "魏", "陶", "姜", "戚", "谢", "邹", "喻",
            "柏", "水", "窦", "章", "云", "苏", "潘", "葛", "奚", "范", "彭", "郎",
            "鲁", "韦", "昌", "马", "苗", "凤", "花", "方", "俞", "任", "袁", "柳",
            "酆", "鲍", "史", "唐", "费", "廉", "岑", "薛", "雷", "贺", "倪", "汤",
            "滕", "殷", "罗", "毕", "郝", "邬", "安", "常", "乐", "于", "时", "傅",
            "皮", "卞", "齐", "康", "伍", "余", "元", "卜", "顾", "孟", "平", "黄",
            "和", "穆", "萧", "尹", "姚", "邵", "湛", "汪", "祁", "毛", "禹", "狄",
            "米", "贝", "明", "臧", "计", "伏", "成", "戴", "谈", "宋", "茅", "庞",
            "熊", "纪", "舒", "屈", "项", "祝", "董", "梁", "杜", "阮", "蓝", "闵",
            "席", "季", "麻", "强", "贾", "路", "娄", "危", "江", "童", "颜", "郭",
            "梅", "盛", "林", "刁", "锺", "徐", "邱", "骆", "高", "夏", "蔡", "田",
            "樊", "胡", "凌", "霍", "虞", "万", "支", "柯", "昝", "管", "卢", "莫",
            "经", "房", "裘", "缪", "干", "解", "应", "宗", "丁", "宣", "贲", "邓",
            "郁", "单", "杭", "洪", "包", "诸", "左", "石", "崔", "吉", "钮", "龚",
            "程", "嵇", "邢", "滑", "裴", "陆", "荣", "翁", "荀", "羊", "於", "惠",
            "甄", "麴", "家", "封", "芮", "羿", "储", "靳", "汲", "邴", "糜", "松",
            "井", "段", "富", "巫", "乌", "焦", "巴", "弓", "牧", "隗", "山", "谷",
            "车", "侯", "宓", "蓬", "全", "郗", "班", "仰", "秋", "仲", "伊", "宫",
            "宁", "仇", "栾", "暴", "甘", "钭", "历", "戎", "祖", "武", "符", "刘",
            "景", "詹", "束", "龙", "叶", "幸", "司", "韶", "郜", "黎", "蓟", "溥",
            "印", "宿", "白", "怀", "蒲", "邰", "从", "鄂", "索", "咸", "籍", "赖",
            "卓", "蔺", "屠", "蒙", "池", "乔", "阳", "郁", "胥", "能", "苍", "双",
            "闻", "莘", "党", "翟", "谭", "贡", "劳", "逄", "姬", "申", "扶", "堵",
            "冉", "宰", "郦", "雍", "却", "璩", "桑", "桂", "濮", "牛", "寿", "通",
            "边", "扈", "燕", "冀", "僪", "浦", "尚", "农", "温", "别", "庄", "晏",
            "柴", "瞿", "阎", "充", "慕", "连", "茹", "习", "宦", "艾", "鱼", "容",
            "向", "古", "易", "慎", "戈", "廖", "庾", "终", "暨", "居", "衡", "步",
            "都", "耿", "满", "弘", "匡", "国", "文", "寇", "广", "禄", "阙", "东",
            "欧", "殳", "沃", "利", "蔚", "越", "夔", "隆", "师", "巩", "厍", "聂",
            "晁", "勾", "敖", "融", "冷", "訾", "辛", "阚", "那", "简", "饶", "空",
            "曾", "毋", "沙", "乜", "养", "鞠", "须", "丰", "巢", "关", "蒯", "相",
            "查", "后", "荆", "红", "游", "竺", "权", "逮", "盍", "益", "桓", "公"};

    /**
     * 名数组
     */
    private static final String[] MING = {
            "斌魁", "渤昊", "仲前", "杰德", "科中", "任卫", "无相", "益恒", "润潮", "良纬", "献策",
            "鼎泓", "光浪", "福光", "中帅", "作深", "锴盛", "定启", "嗣隆", "项平", "衡忠", "沛麟",
            "正洪", "宝尊", "锋靖", "顺安", "楷铠", "乔斌", "程哲", "广允", "万阔", "致森", "永鉴",
            "卓辉", "伦洋", "首望", "宝陆", "伟炫", "德丘", "衍滔", "铿正", "川灏", "随雄", "殿钟",
            "起恒", "景由", "岳扬", "镇文", "邦楷", "绪远", "昊之", "积骁", "明律", "鹤德", "安孟",
            "书宽", "朝翔", "康浩", "相徽", "宜禄", "经策", "友志", "观保", "镇玄", "尚锐", "仲全",
            "东哲", "忠永", "锦照", "家元", "田川", "仕正", "和孟", "本力", "际景", "永灼", "以兵",
            "京韬", "光清", "泉亮", "楷源", "展泉", "先尊", "康胜", "界城", "秉闯", "仲原", "同尧",
            "申南", "林征", "腾新", "自龙", "谷尧", "希宾", "宇边", "战海", "载景", "敬才", "祝耀",
            "荣进", "弈", "宸", "烨", "岚", "漠", "庭", "城", "途", "伯", "弘", "枭", "律", "哲",
            "凌", "沙", "辞", "汉", "恺", "斯", "烟", "暘", "寒", "离", "尘", "崖", "伞", "谪",
            "泽", "扬", "赫", "穆", "独", "绝", "轩","澄邈","德泽","海超","海阳","海荣","海逸","海昌",
            "瀚钰","瀚文","涵亮","涵煦","明宇","涵衍","浩皛","浩波","浩博","浩初","浩宕","浩歌","浩广",
            "浩邈","浩气","浩思","浩言","鸿宝","鸿波","鸿博","鸿才","鸿畅","鸿畴","鸿达","鸿德","鸿飞",
            "鸿风","鸿福","鸿光","鸿晖","鸿朗","鸿文","鸿轩","鸿煊","鸿骞","鸿远","鸿云","鸿哲","鸿祯",
            "鸿志","鸿卓","嘉澍","光济","澎湃","彭泽","鹏池","鹏海","浦和","浦泽","瑞渊","越泽","博耘",
            "德运","辰宇","辰皓","辰钊","辰铭","辰锟","辰阳","辰韦","辰良","辰沛","晨轩","晨涛","晨濡",
            "晨潍","鸿振","吉星","铭晨","起运","运凡","运凯","运鹏","运浩","运诚","运良","运鸿","运锋",
            "运盛","运升","运杰","运珧","运骏","运凯","运乾","维运","运晟","运莱","运华","耘豪","星爵",
            "星腾","星睿","星泽","星鹏","星然","震轩","震博","康震","震博","振强","振博","振华","振锐",
            "振凯","振海","振国","振平","昂然","昂雄","昂杰","昂熙","昌勋","昌盛","昌淼","昌茂","昌黎",
            "昌燎","昌翰","晨朗","德明","德昌","德曜","范明","飞昂","高旻","晗日","昊然","昊天","昊苍",
            "昊英","昊宇","昊嘉","昊明","昊伟","昊硕","昊磊","昊东","鸿晖","鸿朗","华晖","金鹏","晋鹏",
            "敬曦","景明","景天","景浩","俊晖","君昊","昆琦","昆鹏","昆纬","昆宇","昆锐","昆卉","昆峰",
            "昆颉","昆谊","昆皓","昆鹏","昆明","昆杰","昆雄","昆纶","鹏涛","鹏煊","曦晨","曦之","新曦",
            "旭彬","旭尧","旭鹏","旭东","旭炎","炫明","宣朗","学智","轩昂","彦昌","曜坤","曜栋","曜文",
            "曜曦","曜灿","曜瑞","智伟","智杰","智刚","智阳","昌勋","昌盛","昌茂","昌黎","昌燎","昌翰",
            "晨朗","昂然","昂雄","昂杰","昂熙","范明","飞昂","高朗","高旻","德明","德昌","德曜","智伟",
            "智杰","智刚","智阳","瀚彭","旭炎","宣朗","学智","昊然","昊天","昊苍","昊英","昊宇","昊嘉",
            "昊明","昊伟","鸿朗","华晖","金鹏","晋鹏","敬曦","景明","景天","景浩","景行","景中","景逸",
            "景彰","昆鹏","昆明","昆杰","昆雄","昆纶","鹏涛","鹏煊","景平","俊晖","君昊","昆琦","昆鹏",
            "昆纬","昆宇","昆锐","昆卉","昆峰","昆颉","昆谊","轩昂","彦昌","曜坤","曜文","曜曦","曜灿",
            "曜瑞","曦晨","曦之","新曦","鑫鹏","旭彬","旭尧","旭鹏","旭东","浩轩","浩瀚","浩慨","浩阔",
            "鸿熙","鸿羲","鸿禧","鸿信","泽洋","泽雨","哲瀚","胤运","佑运","允晨","运恒","运发","云天",
            "耘志","耘涛","振荣","振翱","中震","子辰","晗昱","瀚玥","瀚昂","瀚彭","景行","景中","景逸",
            "景彰","绍晖","文景","曦哲","永昌","子昂","智宇","智晖","晗日","晗昱","瀚昂","昊硕","昊磊",
            "昊东","鸿晖","绍晖","文昂","文景","曦哲","永昌","子昂","智宇","智晖","浩然","鸿运","辰龙",
            "运珹","振宇","高朗","景平","鑫鹏","昌淼","炫明","昆皓","曜栋","文昂","治汇","恨桃","依秋",
            "依波","香巧","紫萱","涵易","忆之","幻巧","美倩","安寒","白亦","惜玉","碧春","怜雪","听南",
            "念蕾","紫夏","凌旋","芷梦","凌寒","梦竹","千凡","丹蓉","慧贞","思菱","平卉","笑柳","雪卉",
            "南蓉","谷梦","巧兰","绿蝶","飞荷","佳蕊","芷荷","怀瑶","慕易","若芹","紫安","曼冬","寻巧",
            "雅昕","尔槐","以旋","初夏","依丝","怜南","傲菡","谷蕊","笑槐","飞兰","笑卉","迎荷","佳音",
            "梦君","妙绿","觅雪","寒安","沛凝","白容","乐蓉","映安","依云","映冬","凡雁","梦秋","梦凡",
            "秋巧","若云","元容","怀蕾","灵寒","天薇","翠安","乐琴","宛南","怀蕊","白风","访波","亦凝",
            "易绿","夜南","曼凡","亦巧","青易","冰真","白萱","友安","海之","小蕊","又琴","天风","若松",
            "盼菡","秋荷","香彤","语梦","惜蕊","迎彤","沛白","雁彬","易蓉","雪晴","诗珊","春冬","晴钰",
            "冰绿","半梅","笑容","沛凝","映秋","盼烟","晓凡","涵雁","问凝","冬萱","晓山","雁蓉","梦蕊",
            "山菡","南莲","飞双","凝丝","思萱","怀梦","雨梅","冷霜","向松","迎丝","迎梅","雅彤","香薇",
            "以山","碧萱","寒云","向南","书雁","怀薇","思菱","忆文","翠巧","书文","若山","向秋","凡白",
            "绮烟","从蕾","天曼","又亦","从语","绮彤","之玉","凡梅","依琴","沛槐","又槐","元绿","安珊",
            "夏之","易槐","宛亦","白翠","丹云","问寒","易文","傲易","青旋","思真","雨珍","幻丝","代梅",
            "盼曼","妙之","半双","若翠","初兰","惜萍","初之","宛丝","寄南","小萍","静珊","千风","天蓉",
            "雅青","寄文","涵菱","香波","青亦","元菱","翠彤","春海","惜珊","向薇","冬灵","惜芹","凌青",
            "谷芹","雁桃","映雁","书兰","盼香","梅致","寄风","芳荷","绮晴","映之","醉波","幻莲","晓昕",
            "傲柔","寄容","以珊","紫雪","芷容","书琴","美伊","涵阳","怀寒","易云","代秋","惜梦","宇涵",
            "谷槐","怀莲","英莲","芷卉","向彤","新巧","语海","灵珊","凝丹","小蕾","迎夏","慕卉","飞珍",
            "冰夏","亦竹","飞莲","秋月","元蝶","春蕾","怀绿","尔容","小玉","幼南","凡梦","碧菡","初晴",
            "宛秋","傲旋","新之","凡儿","夏真","静枫","芝萱","恨蕊","乐双","念薇","靖雁","菊颂","丹蝶",
            "元瑶","冰蝶","念波","迎翠","海瑶","乐萱","凌兰","曼岚","若枫","傲薇","雅芝","乐蕊","秋灵",
            "凤娇","觅云","依伊","恨山","从寒","忆香","香菱","静曼","青寒","笑天","涵蕾","元柏","代萱",
            "紫真","千青","雪珍","寄琴","绿蕊","荷柳","诗翠","念瑶","兰楠","曼彤","怀曼","香巧","采蓝",
            "芷天","尔曼","巧蕊"};

    /**
     * 手机号码前缀
     */
    private static final String[] PHONE_PREFIX = {
            "130", "131", "132", "145", "155", "156", "166",
            "171", "175", "176", "185", "186", "166", "133",
            "149", "153", "173", "177", "180", "181", "189",
            "199", "135", "136", "137", "138", "139", "147",
            "150", "151", "152", "157", "158", "159", "172",
            "178", "182", "183", "184", "187", "188", "198"};


    /**
     * Random随机数
     */
    public static final Random random = new Random();

    /**
     * 随机获取名字
     * @return 名字
     */
    public static String randomName() {
        return randomArrayElement(XING) + randomArrayElement(MING);
    }

    /**
     * 随机返回手机号码
     * @return 手机号码
     */
    public static String randomPhoneNumber() {
        StringBuffer str = new StringBuffer();
        String phonePrefix = randomArrayElement(PHONE_PREFIX);
        str.append(phonePrefix);
        for (int i = 0; i < 8; i++) {
            str.append(random.nextInt(10));
        }
        return str.toString();
    }

    /**
     * 随机从数组中获取一个元素
     * @param array
     * @param <T>
     * @return
     */
    public static <T> T randomArrayElement(T[] array) {
        T data = array[random.nextInt(array.length)];
        return data;
    }

    /**
     * 随机从数组中获取一个元素
     * @param list
     * @param <T>
     * @return
     */
    public static <T> T randomListElement(List<T> list) {
        T data = list.get(random.nextInt(list.size()));
        return data;
    }

    /**
     * 随机一个固定电话号码
     * @return
     */
    public static String randomFixedPhoneNumber(){
        StringBuffer str = new StringBuffer();
        for (int i = 0; i < 11; i++) {
            str.append(random.nextInt(10));
            if(i == 3){
                str.append("-");
            }
        }
        return str.toString();
    }

    /**
     * 随机Int
     * @param range
     * @return
     */
    public static Integer randomInt(Integer range){
        return random.nextInt(range);
    }


    /**
     * 随机Boolean
     * @param
     * @return
     */
    public static Boolean randomBoolean(){
        return random.nextBoolean();
    }


    public static void main(String[] args) {
    }

}
